Personal computers (PCs) such as IBM-compatible PCs typically include hardware devices such as a processor and a memory for implementing various software programs, a principal one being a central operating environment. In turn, the operating environment, or operating system, supports the variety of other software applications such as a word processing program or a spreadsheet program.
Some operating systems include a graphical user interface, described generally as a graphical operating system, which displays various information to the user as a combination of pictures and text which the user can manipulate. Generally, some graphical operating systems instigate an instance of a software application by displaying the various text, graphics and features of the application within a rectangular window. Moreover, some graphical operating systems allow a user to run multiple software applications. For example, a user can work on a word processing application while also working on a spreadsheet application or a database application at the same time. To increase user efficiency and to allow interaction between the multiple applications, some software platforms group two or more applications (e.g., word processing, spreadsheet and database) into a single software package, generally known as a “monolithic” parent process.
In a monolithic parent process, the user selects one or more of the grouped applications and the parent process launches each instance of an application as a separate rectangular window confined within the larger rectangular window of the parent process. Each window within the parent window is referred to as a “child window.” One example of a monolithic parent process is Microsoft Corporation's “MS WORKS®” software package. In this software package, a user selects an instance of either a word processing, spreadsheet or database program by clicking on an icon displayed within the parent process. Accordingly, the parent process creates a child window and displays the selected word processing, spreadsheet or database process. To use a second application (or create a second instance of the same process), the user clicks on the appropriate icon and a second child window is created. To the operating system, however, each child window application is treated as part of the single parent process rather than as a separate process. Thus, all the child window applications share the system resources allotted to the monolithic parent process, such as the graphics display interface (GDI)/font resource data utilized to print documents or display characters on a video screen.
Some operating systems, such as Microsoft Corporation's “WINDOWS®98” or “WINDOWS NT®” operating systems, allow a user to toggle between separate processes running within the operating system by manipulating a task bar or application switching feature. The selected process is displayed as the foremost rectangular window and/or highlighted, while any other open process rectangular windows are either not displayed or are displayed in a lesser fashion. However, in a multiple child window application scenario, the user cannot toggle between the child windows in this manner because they are treated as a part of the monolithic parent process by the operating system. Thus, the effectiveness and desirability of these monolithic software platforms is diminished.
One approach to eliminate the deficiencies associated with monolithic parent processes has been to provide a software platform which implements each instance of an application launched from a parent process as a separate process and not as a child window. For example, each instance of the word processing, spreadsheet or database application is a separate process displayed as a rectangular window within the operating environment and not confined within the parent process window. Thus, the user is able to toggle between the application windows (or any other process windows) by utilizing the task bar of the operating environment.
To the user, the implementation of the word processing, spreadsheet or database applications as separate processes appears similar, if not identical, to the monolithic approach. For example, the user still selects the word processing icon within the base process to create a word processing application. Furthermore, if the user selects the word processing icon a second time, another instance of the word processing application would be created.
Unlike the monolithic approach, however, each application is treated and displayed as a separate process by the operating system. Thus, the operating environment creates and allocates a separate a copy of the necessary system resources, such as the GDI/font resource data, for each process. Each process' system resources are then stored in a central memory location provided by the computer system. Because each PC typically allocates only a limited amount of memory space for all the processes to store individual copies of the system resource data, the implementation of multiple processes can quickly deplete computer memory resources. For example, if a computer allocates 64K of system memory for maintaining process GDI/font resource data, and each copy of the data allocated to the word processing, spreadsheet or database application is 4K in size, the allotted system memory would be depleted after launching only 16 processes. Thus, the GDI/font resource data becomes a system constraint as to how many applications or overall applications within the operating environment can be launched at one time. Additionally, the overall efficiency of the computer system is reduced by the additional processing time required to create and manage multiple copies of the same resource data.
Thus, there is a need for a cross-process resource sharing system and method in which multiple processes can share common resource data irrespective of the number of processes active within an operating system.